The present disclosure relates to technology for non-volatile memory.
Semiconductor memory has become increasingly popular for use in various electronic devices. For example, non-volatile semiconductor memory is used in cellular telephones, digital cameras, personal digital assistants, mobile computing devices, non-mobile computing devices and other devices. Electrically Erasable Programmable Read Only Memory (EEPROM) and flash memory are among the most popular non-volatile semiconductor memories. With flash memory, also a type of EEPROM, the contents of the whole memory array, or of a portion of the memory, can be erased in one step, in contrast to the traditional, full-featured EEPROM. The array of storage elements may be divided into a large number of blocks of storage elements.
Both the traditional EEPROM and the flash memory utilize a floating gate that is positioned above and insulated from a channel region in a semiconductor substrate. The floating gate is positioned between the source and drain regions. A control gate is provided over and insulated from the floating gate. The threshold voltage (Vth) of the transistor thus formed is controlled by the amount of charge that is retained on the floating gate. That is, the minimum amount of voltage that must be applied to the control gate before the transistor is turned on to permit conduction between its source and drain is controlled by the level of charge on the floating gate. Thus, a storage element may be read by applying a reference voltage to it control gate and sensing the magnitude of the current that flows between its drain and source.
A storage element may be programmed by applying suitable programming voltages to its control gate. Typically, a program voltage Vpgm applied to the control gate during a program operation is applied as a series of pulses that increase in magnitude over time. The threshold voltage (Vth) of the transistor in the storage element is measured after each program pulse to determine whether the storage element is programmed. When a given storage element passes verify, it is locked out from further programming.
Some devices have a memory controller included in the same memory device as one or more memory die. Commands and data are transferred between the controller and the one or more memory die. For some conventional techniques, the data to be programmed into the storage elements on a memory die is first stored into data latches on the memory die.
However, during programming, the data in the data latches is lost with some conventional techniques. As one example, the verify status for a given storage element is recorded in one of the latches that the program data was originally stored into. However, this means that the original program data is lost during the programming process. Thus, if a program error occurs, the original program data cannot be recovered from the data latches for some conventional techniques.
One possible recovery mode is for the controller to save the program data while the programming is underway. Thus, the controller can re-program the data to other storage elements after a program failure. However, this recovery mode occupies controller storage (e.g., data latches). Thus, the controller cannot release this storage before the programming is finished.
Another possible approach for data recovery is for the controller to first buffer the program data in a cache area on the memory die. This cache area may be storage elements that are intended for short term data storage. However, there is a performance penalty to program the data to the cache area prior to every program operation. Also, the data from the cache storage elements needs to be read back and error-bit correction (ECC) is also needed in this approach.